// pages/profile/index.ts
// 在页面page之前获取页面栈，这个页面的实例此时还没有创建也就没有进入页面栈
const pageStack = getCurrentPages()
Page({
  data: {
    avatar: '/static/images/avatar_1.jpg',
    nickName: ''
  },
  onLoad() {
    this.donick()
  },
  // 获取头像信息进行上传
  doavatar(ev) {
    this.updateAvatar(ev.detail.avatarUrl)
  },

  // 更新用户头像
  updateAvatar(avatar) {
    // 调用 API 上传文件
    wx.uploadFile({
      // 接口地址
      url: wx.http.baseURL + '/upload',
      // 待上传的文件路径
      filePath: avatar,
      name: 'file',
      header: {
        // 用户登录状态
        Authorization: 'Bearer ' + getApp().token
      },
      formData: { type: 'avatar' },
      success: (result) => {
        // 处理返回的数据
        const data = JSON.parse(result.data)
        // 检测接口是否调用成功
        if (data.code !== 10000) return wx.utils.toast('上传头像失败!')
        // 借助于页面栈实例来更新 pages/my/index.wxml 中的头像
        pageStack[0].setData({ avatar: data.data.url })
        // 修改了本地
        this.setData({
          avatar: data.data.url
        })
      }
    })
  },

  // 获取昵称后上传服务器
  // 更新昵称接口
  async updateNickname(ev) {
    let nickName = ev.detail.value
    if (nickName === '') return
    // 调用接口更新用户昵称
    const { code } = await wx.http.put('/userInfo', { nickName })
    // 检测接口是否调用成功
    if (code !== 10000) return wx.utils.toast('更新昵称失败!')
    // 方式二：直接使用页面栈调用上一个页面的实例，修改它的值
    pageStack[0].setData({ nickName }) // 上页面需要使用此昵称
    // 更新本地
    this.setData({ nickName })
  },


  // 先从服务器获取昵称和图片信息
  async donick() {
    const { code, data: { avatar, nickName } } = await wx.http.get('/userInfo')
    // 检测接口是否正常返回结果
    if (code !== 10000) return wx.utils.toast()
    // 渲染数据
    this.setData({ avatar, nickName })
  }

})